﻿Public Class UserChangePass
    Inherits CoreClass

    Dim idUser As Integer = 0
    ' Gan gia tri cho bien MenuID de kiem tra quyen cua ng dung, gia tri nay lay trog DB va dc fix
    Dim chkMenu As Integer = getIDMenu(2)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            ' Set sự kiện submit cho nút chỉ định
            Page.Form.DefaultButton = btnSubmit.UniqueID
            idUser = Request.QueryString("id")
            If Not idUser > 0 Then
                Response.Redirect("/Inside/System/Group/UserManager.aspx")
            End If
            ' Luôn check quyền khi load trang
            chkPms((CInt(Session("GroupId").ToString())), chkMenu)
            If Not Page.IsPostBack Then
                loadData()
            End If
        Catch ex As Exception
            Response.Redirect("/Inside/xLogin.aspx?redirect=" & Request.Url.PathAndQuery.Replace("?", "|"))
        End Try
    End Sub

#Region "Các hàm tự viết"
    ' Lấy dự liệu đưa vào form
    Private Sub loadData()
        Try
            sql = "spi_UserGetByID " & idUser
            objDataRead.ExeReader(sql)
            If Not objDataRead.dataRead.Read Then
                objAlert.ErrorBox(Page, "Người dùng này không tồn tại trong hệ thống.")
                Exit Sub
            End If
            lblUsername.Text = objDataRead.dataRead("UserName").ToString
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Có lỗi trong quá trình update. <br><br>Hãy thông báo lại cho Admin.")
            End If
        End Try

    End Sub

    ' Kiểm tra dữ liệu nhập trên Form
    Public Function chkField() As Boolean
        Dim flag = True

        If txtOldPass.Text = "" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy nhập mật khẩu hiện tại.")
            Return flag
        End If
        If txtNewPass.Text = "" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy nhập mật khẩu mới.")
            Return flag
        End If
        If Not objFunction.IsAlphaNumeric(txtNewPass.Text) Then
            flag = False
            objAlert.ErrorBox(Page, "Mật khẩu chỉ bao gồm các chữ cái: A-Z, a-z, 0-9 và không có khoảng trống.")
            Return flag
        End If
        If txtNewPass1.Text <> txtNewPass.Text Then
            flag = False
            objAlert.ErrorBox(Page, "Mật khẩu nhập lại không khớp.")
            Return flag
        End If
        Return flag
    End Function
#End Region

#Region "Các sự kiện của grid và Button"
    ' Xu ly su kien update pasword
    Private Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
        Try
            ' Kiem tra xem ten user da co hay chua?
            sql = "select UserID from In_Users where UserName = " & objFunction.FieldCheck(lblUsername.Text) & " and UserPass = " & objFunction.FieldCheck(objFunction.Hash(txtOldPass.Text))
            objDataRead.ExeReader(sql)
            If objDataRead.dataRead.Read Then
                Dim id As String = objDataRead.dataRead("UserID")
                sql = "update In_Users set UserPass = " & objFunction.FieldCheck(objFunction.Hash(txtNewPass1.Text)) & " where UserID = " & objFunction.ValueCheck(objDataRead.dataRead("UserID"))
                objDataRead.ExeReader(sql)
                objFunction.writeLog(Session("UserId"), 2, "Thay đổi mật khẩu", "Tên tài khoản được thay đổi: " & lblUsername.Text, "")
                objAlert.InfoBox(Page, "Thay đổi mật khẩu thành công", "UserUpdate.aspx?id=" & id)
            Else
                objAlert.ErrorBox(Page, "Mật khẩu hiện tại của bạn không đúng.")
            End If
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Có lỗi trong quá trình update. <br><br>Hãy thông báo lại cho Admin.")
            End If
        End Try
    End Sub

    ' Xu ly su kien back
    Private Sub btnBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBack.Click
        idUser = Request.QueryString("id")
        Response.Redirect("UserUpdate.aspx?id=" & idUser)
    End Sub

#End Region


End Class